#ifndef PROCESS_H_
#define PROCESS_H_

#include <map>
#include <queue>
#include <stdlib.h>
#include <pthread.h>
#include <stdlib.h>
#include <cstdlib>
#include <iostream>
#include "libraryFunctions/LibraryFunctions.h"

using namespace std;

class Process {

private:
	pthread_t processThread;
	pthread_mutex_t processLock;
	pthread_cond_t* processCond;
	LibraryFunctions* libraryFunctions;
	int id;
	queue < vector<string>* > commandsVectorsQueue;

public:
	Process(int pid, LibraryFunctions* libFunctions);
	virtual ~Process();
	pthread_t start();
	void run();
	//operated by run if there are commands to execute
	void executeCommand(vector<string>* command);
	//operated by the shell
	void addCommand (vector<string>* commandVector);
	void exit();

};

#endif /* PROCESS_H_ */
